<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: ORB_SLAM2::Map Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_o_r_b___s_l_a_m2_1_1_map.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="class_o_r_b___s_l_a_m2_1_1_map-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ORB_SLAM2::Map Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Mapa del mundo, de puntos y keyframes.  
 <a href="class_o_r_b___s_l_a_m2_1_1_map.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_map_8h_source.html">Map.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a688de3b072e0176bb288bb70d36cd0e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a688de3b072e0176bb288bb70d36cd0e9">AddKeyFrame</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *pKF)</td></tr>
<tr class="memdesc:a688de3b072e0176bb288bb70d36cd0e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Agrega un nuevo keyframe al mapa.  <a href="#a688de3b072e0176bb288bb70d36cd0e9">More...</a><br /></td></tr>
<tr class="separator:a688de3b072e0176bb288bb70d36cd0e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d8e1b4376778dfe32df90ec00b599e3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a2d8e1b4376778dfe32df90ec00b599e3">AddMapPoint</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *pMP)</td></tr>
<tr class="memdesc:a2d8e1b4376778dfe32df90ec00b599e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Agrega un mapa 3D al mapa.  <a href="#a2d8e1b4376778dfe32df90ec00b599e3">More...</a><br /></td></tr>
<tr class="separator:a2d8e1b4376778dfe32df90ec00b599e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf0d75e6e234d89b06f568c4600d0436"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#abf0d75e6e234d89b06f568c4600d0436">clear</a> ()</td></tr>
<tr class="memdesc:abf0d75e6e234d89b06f568c4600d0436"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reinicia el mapa.  <a href="#abf0d75e6e234d89b06f568c4600d0436">More...</a><br /></td></tr>
<tr class="separator:abf0d75e6e234d89b06f568c4600d0436"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a082d4a5ec57a48a7591d6769e4778a80"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a082d4a5ec57a48a7591d6769e4778a80">EraseKeyFrame</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *pKF)</td></tr>
<tr class="memdesc:a082d4a5ec57a48a7591d6769e4778a80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Elimina un determinado keyframe del mapa.  <a href="#a082d4a5ec57a48a7591d6769e4778a80">More...</a><br /></td></tr>
<tr class="separator:a082d4a5ec57a48a7591d6769e4778a80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3c82d5e66815fe66cbfb736784f15b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#af3c82d5e66815fe66cbfb736784f15b5">EraseMapPoint</a> (<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *pMP)</td></tr>
<tr class="memdesc:af3c82d5e66815fe66cbfb736784f15b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Elimina un determinado punto del mapa.  <a href="#af3c82d5e66815fe66cbfb736784f15b5">More...</a><br /></td></tr>
<tr class="separator:af3c82d5e66815fe66cbfb736784f15b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cde12cda887a0eb1e24975f4e734592"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a8cde12cda887a0eb1e24975f4e734592">GetAllKeyFrames</a> ()</td></tr>
<tr class="memdesc:a8cde12cda887a0eb1e24975f4e734592"><td class="mdescLeft">&#160;</td><td class="mdescRight">Devuelve un vector de keyframes con todos los keyframes del mapa.  <a href="#a8cde12cda887a0eb1e24975f4e734592">More...</a><br /></td></tr>
<tr class="separator:a8cde12cda887a0eb1e24975f4e734592"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09f346e647d3d36ec644f96d878b0c9b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a09f346e647d3d36ec644f96d878b0c9b">GetAllMapPoints</a> ()</td></tr>
<tr class="memdesc:a09f346e647d3d36ec644f96d878b0c9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Devuelve un vector de puntos, con todos los puntos del mapa.  <a href="#a09f346e647d3d36ec644f96d878b0c9b">More...</a><br /></td></tr>
<tr class="separator:a09f346e647d3d36ec644f96d878b0c9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c93202df313c1245056e01dbb070dca"><td class="memItemLeft" align="right" valign="top">long unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a1c93202df313c1245056e01dbb070dca">GetMaxKFid</a> ()</td></tr>
<tr class="memdesc:a1c93202df313c1245056e01dbb070dca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informa el id del último keyframe agregado.  <a href="#a1c93202df313c1245056e01dbb070dca">More...</a><br /></td></tr>
<tr class="separator:a1c93202df313c1245056e01dbb070dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56e1d96a4e1d669609e2c2a493f133c2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a56e1d96a4e1d669609e2c2a493f133c2">GetReferenceMapPoints</a> ()</td></tr>
<tr class="memdesc:a56e1d96a4e1d669609e2c2a493f133c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Devuelve un vector de puntos a graficar.  <a href="#a56e1d96a4e1d669609e2c2a493f133c2">More...</a><br /></td></tr>
<tr class="separator:a56e1d96a4e1d669609e2c2a493f133c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3440f5e9e93ca7231bde3c5138ab5f5c"><td class="memItemLeft" align="right" valign="top">long unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a3440f5e9e93ca7231bde3c5138ab5f5c">KeyFramesInMap</a> ()</td></tr>
<tr class="memdesc:a3440f5e9e93ca7231bde3c5138ab5f5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informa la cantidad de keyframes en el mapa.  <a href="#a3440f5e9e93ca7231bde3c5138ab5f5c">More...</a><br /></td></tr>
<tr class="separator:a3440f5e9e93ca7231bde3c5138ab5f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ab4040dee1287a387124b7d52ac8a02"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a1ab4040dee1287a387124b7d52ac8a02">Map</a> ()</td></tr>
<tr class="memdesc:a1ab4040dee1287a387124b7d52ac8a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor, que inicializa propiedades.  <a href="#a1ab4040dee1287a387124b7d52ac8a02">More...</a><br /></td></tr>
<tr class="separator:a1ab4040dee1287a387124b7d52ac8a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2d7846734c8cb0421d67ff3907649ad"><td class="memItemLeft" align="right" valign="top">long unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#ad2d7846734c8cb0421d67ff3907649ad">MapPointsInMap</a> ()</td></tr>
<tr class="memdesc:ad2d7846734c8cb0421d67ff3907649ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informa la cantidad de puntos en el mapa.  <a href="#ad2d7846734c8cb0421d67ff3907649ad">More...</a><br /></td></tr>
<tr class="separator:ad2d7846734c8cb0421d67ff3907649ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac31706152aeb99c94ddb7f6ce452bd77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#ac31706152aeb99c94ddb7f6ce452bd77">SetReferenceMapPoints</a> (const std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&gt; &amp;vpMPs)</td></tr>
<tr class="memdesc:ac31706152aeb99c94ddb7f6ce452bd77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Agrega un punto al conjunto de puntos de referencia.  <a href="#ac31706152aeb99c94ddb7f6ce452bd77">More...</a><br /></td></tr>
<tr class="separator:ac31706152aeb99c94ddb7f6ce452bd77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a05544c09b3227d31163f10609b90b913"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a05544c09b3227d31163f10609b90b913">mMutexMapUpdate</a></td></tr>
<tr class="memdesc:a05544c09b3227d31163f10609b90b913"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex para actualización del mapa.  <a href="#a05544c09b3227d31163f10609b90b913">More...</a><br /></td></tr>
<tr class="separator:a05544c09b3227d31163f10609b90b913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a968356226057387d8207054d56e5d35c"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a968356226057387d8207054d56e5d35c">mMutexPointCreation</a></td></tr>
<tr class="memdesc:a968356226057387d8207054d56e5d35c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutex para agregado de nuevos puntos al mapa.  <a href="#a968356226057387d8207054d56e5d35c">More...</a><br /></td></tr>
<tr class="separator:a968356226057387d8207054d56e5d35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9617fdf1c8349a1bf88bb13c20acf160"><td class="memItemLeft" align="right" valign="top">vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a9617fdf1c8349a1bf88bb13c20acf160">mvpKeyFrameOrigins</a></td></tr>
<tr class="memdesc:a9617fdf1c8349a1bf88bb13c20acf160"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registro de los keyframes iniciales.  <a href="#a9617fdf1c8349a1bf88bb13c20acf160">More...</a><br /></td></tr>
<tr class="separator:a9617fdf1c8349a1bf88bb13c20acf160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d45e27f4e9362eb5f8db931b9376b85"><td class="memItemLeft" align="right" valign="top">std::set&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a9d45e27f4e9362eb5f8db931b9376b85">puntosLejanos</a></td></tr>
<tr class="memdesc:a9d45e27f4e9362eb5f8db931b9376b85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntos lejanos.  <a href="#a9d45e27f4e9362eb5f8db931b9376b85">More...</a><br /></td></tr>
<tr class="separator:a9d45e27f4e9362eb5f8db931b9376b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aa6d9c97f0bb802fd544d6abd928dba61"><td class="memTemplParams" colspan="2">template&lt;class Archivo &gt; </td></tr>
<tr class="memitem:aa6d9c97f0bb802fd544d6abd928dba61"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#aa6d9c97f0bb802fd544d6abd928dba61">serialize</a> (Archivo &amp;, const unsigned int)</td></tr>
<tr class="separator:aa6d9c97f0bb802fd544d6abd928dba61"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a86b9fb9d5c601fb6fd88c46444bd553c"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a86b9fb9d5c601fb6fd88c46444bd553c">mMutexMap</a></td></tr>
<tr class="memdesc:a86b9fb9d5c601fb6fd88c46444bd553c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mutext del mapa.  <a href="#a86b9fb9d5c601fb6fd88c46444bd553c">More...</a><br /></td></tr>
<tr class="separator:a86b9fb9d5c601fb6fd88c46444bd553c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfafaf7ca3821cb069cb95fb88c91dfc"><td class="memItemLeft" align="right" valign="top">long unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#abfafaf7ca3821cb069cb95fb88c91dfc">mnMaxKFid</a></td></tr>
<tr class="memdesc:abfafaf7ca3821cb069cb95fb88c91dfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Id del último keyframe agregado.  <a href="#abfafaf7ca3821cb069cb95fb88c91dfc">More...</a><br /></td></tr>
<tr class="separator:abfafaf7ca3821cb069cb95fb88c91dfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf1d31c2cb4df61d232bb7fbd7cfb61d"><td class="memItemLeft" align="right" valign="top">std::set&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#abf1d31c2cb4df61d232bb7fbd7cfb61d">mspKeyFrames</a></td></tr>
<tr class="memdesc:abf1d31c2cb4df61d232bb7fbd7cfb61d"><td class="mdescLeft">&#160;</td><td class="mdescRight">KeyFrames del mapa.  <a href="#abf1d31c2cb4df61d232bb7fbd7cfb61d">More...</a><br /></td></tr>
<tr class="separator:abf1d31c2cb4df61d232bb7fbd7cfb61d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2864c4d90418f02768c85d0255d1eca7"><td class="memItemLeft" align="right" valign="top">std::set&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#a2864c4d90418f02768c85d0255d1eca7">mspMapPoints</a></td></tr>
<tr class="memdesc:a2864c4d90418f02768c85d0255d1eca7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntos del mapa.  <a href="#a2864c4d90418f02768c85d0255d1eca7">More...</a><br /></td></tr>
<tr class="separator:a2864c4d90418f02768c85d0255d1eca7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1d98a7e8207b995494afa7c098a7aaf"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#ad1d98a7e8207b995494afa7c098a7aaf">mvpReferenceMapPoints</a></td></tr>
<tr class="memdesc:ad1d98a7e8207b995494afa7c098a7aaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntos de referencia en el mapa.  <a href="#ad1d98a7e8207b995494afa7c098a7aaf">More...</a><br /></td></tr>
<tr class="separator:ad1d98a7e8207b995494afa7c098a7aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:ac98d07dd8f7b70e16ccb9a01abf56b9c"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#ac98d07dd8f7b70e16ccb9a01abf56b9c">boost::serialization::access</a></td></tr>
<tr class="memdesc:ac98d07dd8f7b70e16ccb9a01abf56b9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialización agregada para guardar y cargar mapas.  <a href="#ac98d07dd8f7b70e16ccb9a01abf56b9c">More...</a><br /></td></tr>
<tr class="separator:ac98d07dd8f7b70e16ccb9a01abf56b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3f5346f31d572dd2ab4fcd658de5bc4"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html#ad3f5346f31d572dd2ab4fcd658de5bc4">Serializer</a></td></tr>
<tr class="separator:ad3f5346f31d572dd2ab4fcd658de5bc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Mapa del mundo, de puntos y keyframes. </p>
<p>El mapa del mundo consiste en un conjunto de puntos 3D, de puntos 3D de referencia, y de keyframes que los observan. ORB-SLAM utiliza un único mapa que se crea en <a class="el" href="main_8cc.html">main.cc</a>, se pasa a los constructores de los 3 threads (tracking, loopClosing, localMapping), al constructor del MapPublisher y al framePublisher. El mapa tiene un flag mbMapUpdates, protegido, que indica si el mapa está actualizado o, por el contrario, hay algún BA en proceso. localMapping y loopClosing son los dos threads que llevan a cabo BA, y al terminar corrigen el flag con SetFlagAfterBA(). El flag puede estar en false por períodos muy breves en otras actualizaciones, como por ejemplo al agregar o eliminar un punto. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a1ab4040dee1287a387124b7d52ac8a02"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ORB_SLAM2::Map::Map </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor, que inicializa propiedades. </p>
<p>El mapa comienza "desactualizado" con mbMapUpdated==false. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a688de3b072e0176bb288bb70d36cd0e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::AddKeyFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *&#160;</td>
          <td class="paramname"><em>pKF</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Agrega un nuevo keyframe al mapa. </p>
<p>Registra el nuevo keyframe en el vector de keyframes del mapa, y actualiza el registro mnMaxKFid del id del último keyframe. </p>

</div>
</div>
<a id="a2d8e1b4376778dfe32df90ec00b599e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::AddMapPoint </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&#160;</td>
          <td class="paramname"><em>pMP</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Agrega un mapa 3D al mapa. </p>

</div>
</div>
<a id="abf0d75e6e234d89b06f568c4600d0436"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::clear </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reinicia el mapa. </p>
<p>Elimina puntos y keyframes del mapa (es decir, del sistema), y limpia los vectores de puntos y keyframes. </p>

</div>
</div>
<a id="a082d4a5ec57a48a7591d6769e4778a80"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::EraseKeyFrame </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> *&#160;</td>
          <td class="paramname"><em>pKF</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Elimina un determinado keyframe del mapa. </p>

</div>
</div>
<a id="af3c82d5e66815fe66cbfb736784f15b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::EraseMapPoint </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&#160;</td>
          <td class="paramname"><em>pMP</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Elimina un determinado punto del mapa. </p>
<p>Quita el punto del contenedor mspMapPoints. Debería luego eliminar el objeto punto, pero no lo hace para evitar conflictos de concurrencia. Esta función es final, delega la responsabilidad de la coherencia de datos a la función que la invoca.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pMP</td><td>Punto del mapa a eliminar.</td></tr>
  </table>
  </dd>
</dl>
<p>Ejecuta mspMapPoints.erase(pMP)</p>
<p>Se invoca sólo desde <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html#a8f2e205afcfae3dc70196bcd29194440" title="Toma las propiedades del punto argumento. ">MapPoint::Replace</a> y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html#a7ed2a66b528165d6c39cb6f84f684308" title="Elimina el punto, marcándolo como malo. ">MapPoint::SetBadFlag</a>. </p>

</div>
</div>
<a id="a8cde12cda887a0eb1e24975f4e734592"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a> * &gt; ORB_SLAM2::Map::GetAllKeyFrames </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Devuelve un vector de keyframes con todos los keyframes del mapa. </p>

</div>
</div>
<a id="a09f346e647d3d36ec644f96d878b0c9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt; ORB_SLAM2::Map::GetAllMapPoints </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Devuelve un vector de puntos, con todos los puntos del mapa. </p>

</div>
</div>
<a id="a1c93202df313c1245056e01dbb070dca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long unsigned int ORB_SLAM2::Map::GetMaxKFid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Informa el id del último keyframe agregado. </p>

</div>
</div>
<a id="a56e1d96a4e1d669609e2c2a493f133c2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt; ORB_SLAM2::Map::GetReferenceMapPoints </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Devuelve un vector de puntos a graficar. </p>
<p>Invocado sólo por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html#acde87836a1eed3d297c6524028388a3f" title="Dibuja en pantalla todos los puntos 3D del mapa. ">MapDrawer::DrawMapPoints</a>, estos puntos se grafican en rojo, representando el mapa local. </p>

</div>
</div>
<a id="a3440f5e9e93ca7231bde3c5138ab5f5c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long unsigned int ORB_SLAM2::Map::KeyFramesInMap </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Informa la cantidad de keyframes en el mapa. </p>

</div>
</div>
<a id="ad2d7846734c8cb0421d67ff3907649ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">long unsigned int ORB_SLAM2::Map::MapPointsInMap </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Informa la cantidad de puntos en el mapa. </p>

</div>
</div>
<a id="aa6d9c97f0bb802fd544d6abd928dba61"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class Archivo &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::serialize </td>
          <td>(</td>
          <td class="paramtype">Archivo &amp;&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned&#160;</td>
          <td class="paramname"><em>int</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac31706152aeb99c94ddb7f6ce452bd77"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::Map::SetReferenceMapPoints </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&gt; &amp;&#160;</td>
          <td class="paramname"><em>vpMPs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Agrega un punto al conjunto de puntos de referencia. </p>
<p>Esta función se invoca exclusivamente desde Tracing::UpdateReference(), para registrar aquí los puntos del mapa local. </p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="ac98d07dd8f7b70e16ccb9a01abf56b9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">friend class boost::serialization::access</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Serialización agregada para guardar y cargar mapas. </p>

</div>
</div>
<a id="ad3f5346f31d572dd2ab4fcd658de5bc4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="class_o_r_b___s_l_a_m2_1_1_serializer.html">Serializer</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a86b9fb9d5c601fb6fd88c46444bd553c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::Map::mMutexMap</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mutext del mapa. </p>

</div>
</div>
<a id="a05544c09b3227d31163f10609b90b913"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::Map::mMutexMapUpdate</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Mutex para actualización del mapa. </p>

</div>
</div>
<a id="a968356226057387d8207054d56e5d35c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex ORB_SLAM2::Map::mMutexPointCreation</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Mutex para agregado de nuevos puntos al mapa. </p>

</div>
</div>
<a id="abfafaf7ca3821cb069cb95fb88c91dfc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">long unsigned int ORB_SLAM2::Map::mnMaxKFid</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Id del último keyframe agregado. </p>

</div>
</div>
<a id="abf1d31c2cb4df61d232bb7fbd7cfb61d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::set&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt; ORB_SLAM2::Map::mspKeyFrames</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>KeyFrames del mapa. </p>

</div>
</div>
<a id="a2864c4d90418f02768c85d0255d1eca7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::set&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::Map::mspMapPoints</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntos del mapa. </p>

</div>
</div>
<a id="a9617fdf1c8349a1bf88bb13c20acf160"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_key_frame.html">KeyFrame</a>*&gt; ORB_SLAM2::Map::mvpKeyFrameOrigins</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registro de los keyframes iniciales. </p>
<p>El único keyframe en este vector lo agrega <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html#afeb077c81cd700d779348b80698086e8" title="Crea el mapa inicial. ">Tracking::CreateInitialMapMonocular</a>. El el keyframe inicial. Es iterado por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_loop_closing.html#a4b10a9c18541818c9490a62447ef7f18" title="Bundle adjustment sobre todo el mapa luego de cerrar el bucle. ">LoopClosing::RunGlobalBundleAdjustment</a>. </p>

</div>
</div>
<a id="ad1d98a7e8207b995494afa7c098a7aaf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::Map::mvpReferenceMapPoints</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntos de referencia en el mapa. </p>
<p>Son los puntos del mapa local, para graficar en rojo. Tracking::UpdateReference lo genera, y <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_drawer.html#acde87836a1eed3d297c6524028388a3f" title="Dibuja en pantalla todos los puntos 3D del mapa. ">MapDrawer::DrawMapPoints</a> lo consume. Por cada cuadro que se procesa, se actualiza el mapa local y se copia este vector al mapa. Es un vector efímero. </p>

</div>
</div>
<a id="a9d45e27f4e9362eb5f8db931b9376b85"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::set&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::Map::puntosLejanos</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Puntos lejanos. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/include/<a class="el" href="_map_8h_source.html">Map.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/src/<a class="el" href="_map_8cc.html">Map.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_o_r_b___s_l_a_m2.html">ORB_SLAM2</a></li><li class="navelem"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_map.html">Map</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
